;Exam2009H21Prg VtgɂRQrbgZ
;搔RQrbgA搔RQrbg 
;----------------
MAIN START
	LAD GR1,VALUP ;搔̏ʌ̃AhX
	LAD GR2,MLTUP  ;搔̏ʌ̃AhX
	LAD GR3,SEKI  ; vZʂ̏ʌ̃AhX
	CALL MUL
	RET
VALUP DC  #0079 ;搔̏ʌ
VALDWN DC #8A03 ;搔̏ʌ
MLTUP DC #0000  ;搔̏ʌ
MLTDWN DC #0002 ;搔̉ʌ
SEKI DS 2       ;
	END
;------------------
MUL START
	RPUSH
	PUSH 0,GR3    ;ς̏ʌAhXޔ
	PUSH 0,GR2    ;搔ʌAhXޔ
	LD GR2,1,GR2  ;搔ʌofqQɐݒ
	CALL MULS     ;搔w搔ʌ[ρi`j
	POP GR2       ;搔ʌAhX
	LD GR2,0,GR2  ; I
    ;搔ʌofqQɐݒ@
	LAD GR3,SV    ;ʂ̊i[ƂčƗ̈ݒ
	CALL MULS     ;搔w搔ʌ[ρiaj
	LD GR6,1,GR3  ;@J@
	POP GR3       ;
	ADDL GR6,0,GR3
    ;ρi`j̏ʌƐρiaj̉ʌZ
	ST GR6,0,GR3
	RPOP
	RET
SV DS 2
	END
;----------------
MULS START
	RPUSH
	LAD GR6,0    ;ρ@ʌ̏
	LAD GR7,0    ;ρ@ʌ̏
	LD GR4,0,GR1 ;搔@ʌ̎o
	LD GR5,1,GR1 ;搔@ʌ̎o
LP SRL GR2,1      ;搔PrbgEɃVtg
	JOV ADD32    ;@E
	JZE FIN
	JUMP NEXT      ;ZXLbv
ADD32 ADDL GR6,GR4 ;32bit + 32bit --> 32bit
	ADDL GR7,GR5   ;
	JOV ADJ1       ;@E
	JUMP NEXT
ADJ1 ADDL GR6,=1 ;グ
NEXT SLL GR4,1   ;搔iRQrbgjʌPrbgɃVtg
	;̃VtgōŉʌK[ƂȂB
	SLL GR5,1   ;搔ʌPrbgɃVtg@@G
	JOV ADJ2
	JUMP LP
ADJ2 OR GR4,=1    ;ŉʌPɂ
;ADJ2 ADDL GR4,=1 ; ł͂łB
	JUMP LP
FIN ST GR6,0,GR3  ;Zʂ̊i[
	ST GR7,1,GR3
	RPOP
	RET
	END
;-------------------
